BUSCO を ローカル PC の Docker コンテナで実行してみた
BUSCOの実行環境構築にあたり手始めにローカルPCのDockerで実行してみた記録です。最終目標はクラウドHPCを駆使した Docker コンテナ実行環境を構築します。
- ローカルPCの Docker で BUSCO コンテナを起動
- テストデータを用いて BUSCO で解析処理
- 実行結果のプロット
BUSCO とは
ゲノムアセンブリ、遺伝子セットの完全性を評価するためのルールで、バイオインフォマティクスで利用されているソフトウェアです。この分野のプロフェッショナルではない私にとっては以下の説明がわかりやすかったです。
BUSCOはCore gene setがアセンブルされた配列の中にどれだけあるか調べることで、ゲノムシーケンスやトランスクリプトームシーケンスがどれくらいの精度でできているかを調べるものである。例えば、とある菌にはCore gene setが400個あったとして実際には200個しか見つからなかったとしたら、「シーケンス段階としてはまだまだだね」という話になる。逆に99%以上あるとすれば、なかなか信頼できるシーケンスだなという一つの指標として利用できる。
引用: BUSCOの使い方がだいぶ変わってた話 - Qiita
ローカルPCで実行環境構築してみた
Docker コンテナを利用した解析の動作確認を行いたいため BUSCO コンテナを使用します。
検証環境
Product | Version |
---|---|
BUSCO | v5.2.2 |
Docker | 20.10.12 |
macOS | 11.6.3 |
CPU | 2.4 GHz クアッドコアIntel Core i5 |
Memory | 16 GB 2133 MHz LPDDR |
Docker インストールの準備
Dockerは公式サイトを参考にインストールしてください。
Mac に Docker Desktop をインストール — Docker-docs-ja 19.03 ドキュメント
Docker Desktop は2022年2月1日から有料化されていますのでFree
の条件に該当しない場合はライセンス契約が必要です。条件については最新情報を公式サイトでご確認ください。
Docker Pricing & Monthly Plan Details | Docker
BUSCO で解析するインプットファイルの準備
BUSCO をテスト実行するためにはインプットファイルの指定が必要です。つまり、テストデータとしてなにかしらの FASTA形式のファイルが必要になります。
今回はショウジョウバエのリファレンスゲノムをテストデータにします。
Drosophila melanogaster (ID 47) - Genome - NCBI
ローカルPCにショウジョウバエのリファレンスゲノムのファイル(GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna
)をダウンロードして保存します。後ほどこのディレクトリを BUSCO コンテナへマウントして BUSCO コンテナからファイルを利用します。
$ mkdir -p ~/work/busco/vol $ cd ~/work/busco/vol $ wget https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/001/215/GCF_000001215.4_Release_6_plus_ISO1_MT/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna.gz $ gunzip GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna.gz
Docker で BUSCO コンテナ を起動
BUSCO のイメージは Docker Hub で公開されており、こちらを使用します。
コンテナイメージ補足
ベースイメージはbiocontainers/biocontainers
を利用しており、biocontainers
自体はubuntu:1604
がベースイメージでした。この分野はUbuntu
がよく使われていますね。
Image Layer Details - biocontainers/biocontainers:latest | Docker Hub
永続化ストレージ
コンテナで実行する BUSCO の実行結果は永続的なストレージに保存したいため、ローカルPCのvol
ディレクトリを BUSCO コンテナへマウントします。vol
ディレクトリはテストデータを事前にダウンロードして保存していたディレクトリです。
- ローカルの
/Users/ohmura.yasutaka/work/busco/vol
ディレクトリをコンテナ内の/mnt
ディレクトリにマウント - BUSCO コンテナを起動しシェルで接続
$ docker run --rm -it -v /Users/ohmura.yasutaka/work/busco/vol/:/mnt ezlabgva/busco:v5.2.2_cv2 bash
初回は BUSCO のイメージのダウンロードからはじまるので多少時間かかります。コンテナ起動後、プロンプトがbusco_user
になっていれば成功です。
解析処理開始
busco
コマンドを実行して解析処理を走らせます。
引数参考
-i
: インプットファイルの指定- ローカルPCからマウントしたディレクトリにあるテストデータのパスを指定しています。
-l
: データセットの指定- 最新バージョンを自動ダウンロードしてくれます。
-o
: 実行結果が保存されるディレクトリ名- 実行結果のファイルが保存されるかと思って
.out
と付けたのですが成果物はディレクトリでした。Output folders and files will be labelled with this name.
とユーザーガイドで説明されていました、よく読まないと。
- 実行結果のファイルが保存されるかと思って
-m
: モード選択gnome
指定しゲノムモードでゲノムアセンブリの評価を行います。
-c
: CPUのコア数/スレッド数の指定
実行時間はローカルPCの性能に依存しますのでResults from dataset
のメッセージが表示されるまで待ちます。私の環境では7039秒( = 1時間57分)かかりましたとメッセージに載っていました。
# 実行コマンド busco_user@ea2752416b82:/mnt$ busco -i /mnt/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna -l eukaryota -o test.out -m genome -c 6 # 実行開始 2022-02-23 08:23:03 INFO: ***** Start a BUSCO v5.2.2 analysis, current time: 02/23/2022 08:23:03 ***** 2022-02-23 08:23:03 INFO: Configuring BUSCO with local environment 2022-02-23 08:23:03 INFO: Mode is genome 2022-02-23 08:23:03 INFO: Downloading information on latest versions of BUSCO data... 2022-02-23 08:23:05 INFO: Input file is /mnt/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna 2022-02-23 08:23:06 INFO: Running BUSCO using lineage dataset eukaryota_odb10 (eukaryota, 2020-09-10) 2022-02-23 08:23:06 INFO: Running 1 job(s) on metaeuk, starting at 02/23/2022 08:23:06 2022-02-23 09:50:00 INFO: [metaeuk] 1 of 1 task(s) completed 2022-02-23 09:50:04 INFO: ***** Run HMMER on gene sequences ***** 2022-02-23 09:50:04 INFO: Running 255 job(s) on hmmsearch, starting at 02/23/2022 09:50:04 2022-02-23 09:50:06 INFO: [hmmsearch] 26 of 255 task(s) completed 2022-02-23 09:50:07 INFO: [hmmsearch] 51 of 255 task(s) completed 2022-02-23 09:50:08 INFO: [hmmsearch] 77 of 255 task(s) completed 2022-02-23 09:50:09 INFO: [hmmsearch] 102 of 255 task(s) completed 2022-02-23 09:50:09 INFO: [hmmsearch] 128 of 255 task(s) completed 2022-02-23 09:50:11 INFO: [hmmsearch] 153 of 255 task(s) completed 2022-02-23 09:50:12 INFO: [hmmsearch] 179 of 255 task(s) completed 2022-02-23 09:50:14 INFO: [hmmsearch] 204 of 255 task(s) completed 2022-02-23 09:50:15 INFO: [hmmsearch] 230 of 255 task(s) completed 2022-02-23 09:50:17 INFO: [hmmsearch] 255 of 255 task(s) completed 2022-02-23 09:50:18 INFO: Extracting missing and fragmented buscos from the file refseq_db.faa... 2022-02-23 09:50:21 INFO: Running 1 job(s) on metaeuk, starting at 02/23/2022 09:50:21 2022-02-23 10:20:16 INFO: [metaeuk] 1 of 1 task(s) completed 2022-02-23 10:20:18 INFO: ***** Run HMMER on gene sequences ***** 2022-02-23 10:20:18 INFO: Running 1 job(s) on hmmsearch, starting at 02/23/2022 10:20:18 2022-02-23 10:20:19 INFO: [hmmsearch] 1 of 1 task(s) completed 2022-02-23 10:20:21 INFO: Validating exons and removing overlapping matches 2022-02-23 10:20:22 INFO: Results: C:99.6%[S:99.6%,D:0.0%],F:0.4%,M:0.0%,n:255 2022-02-23 10:20:24 INFO: -------------------------------------------------- |Results from dataset eukaryota_odb10 | -------------------------------------------------- |C:99.6%[S:99.6%,D:0.0%],F:0.4%,M:0.0%,n:255 | |254 Complete BUSCOs (C) | |254 Complete and single-copy BUSCOs (S) | |0 Complete and duplicated BUSCOs (D) | |1 Fragmented BUSCOs (F) | |0 Missing BUSCOs (M) | |255 Total BUSCO groups searched | -------------------------------------------------- 2022-02-23 10:20:24 INFO: BUSCO analysis done. Total running time: 7039 seconds 2022-02-23 10:20:24 INFO: Results written in /mnt/test.out 2022-02-23 10:20:24 INFO: For assistance with interpreting the results, please consult the userguide: https://busco.ezlab.org/busco_userguide.html 2022-02-23 10:20:24 INFO: Visit this page https://gitlab.com/ezlab/busco#how-to-cite-busco to see how to cite BUSCO
解析終了です。
実行失敗アレコレ
busco
コマンドのフラグをいろいろ試していときに-o
で指定する実行結果を保存するディレクトリ名が重複してエラーになりました。-f
で上書きオプションも用意されていたのですが数時間かけて実行した結果を消してしまったとならないように注意してください。-o
のディレクトリ指定は名前を変更して実行した方が安全かなと思います。
# busco5.out ディレクトリが存在している状態で実行したコマンド busco_user@ea2752416b82:/mnt$ busco -i /mnt/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna -l eukaryota -o busco5.out -m genome -c 6 2022-02-23 08:22:43 INFO: ***** Start a BUSCO v5.2.2 analysis, current time: 02/23/2022 08:22:43 ***** 2022-02-23 08:22:43 INFO: Configuring BUSCO with local environment 2022-02-23 08:22:43 INFO: Mode is genome 2022-02-23 08:22:43 ERROR: A run with the name /mnt/busco5.out already exists... If you are sure you wish to overwrite existing files, please use the -f (force) option 2022-02-23 08:22:43 ERROR: BUSCO analysis failed ! 2022-02-23 08:22:43 ERROR: Check the logs, read the user guide (https://busco.ezlab.org/busco_userguide.html), and check the BUSCO issue board on https://gitlab.com/ezlab/busco/issues
実行結果
-o
で指定したtest.out
ディレクトリの中身です。
$ tree -L 1 . ├── logs ├── run_eukaryota_odb10 └── short_summary.specific.eukaryota_odb10.test.out.txt
解釈
解析結果のサマリを確認してみます。実行結果の解釈についてはユーザーガイドのInterpreting the results
を参考にしたのですが、素人には用語がまず理解できず専門の勉強しないと厳しいです。
# BUSCO version is: 5.2.2 # The lineage dataset is: eukaryota_odb10 (Creation date: 2020-09-10, number of genomes: 70, number of BUSCOs: 255) # Summarized benchmarking in BUSCO notation for file /mnt/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna # BUSCO was run in mode: genome # Gene predictor used: metaeuk ***** Results: ***** C:99.6%[S:99.6%,D:0.0%],F:0.4%,M:0.0%,n:255 254 Complete BUSCOs (C) 254 Complete and single-copy BUSCOs (S) 0 Complete and duplicated BUSCOs (D) 1 Fragmented BUSCOs (F) 0 Missing BUSCOs (M) 255 Total BUSCO groups searched Dependencies and versions: hmmsearch: 3.1 metaeuk: 4.a0f584d
インプットで指定したテストデータはリファレンスゲノムを使ったので完全一致するものと予想していました。しかし、Fragmented
が1つあり100%一致にはならないんだと思いました。
プロット
実行結果をグラフにして可視化もできるのでやってみました。
busco_user@30c9081b2a6b:/mnt$ generate_plot.py -wd /mnt/test.out 2022-03-06 02:13:57 INFO: ****************** Start plot generation at 03/06/2022 02:13:57 ****************** 2022-03-06 02:13:57 INFO: Load data ... 2022-03-06 02:13:57 INFO: Loaded /mnt/test.out/short_summary.specific.eukaryota_odb10.test.out.txt successfully 2022-03-06 02:13:57 INFO: Generate the R code ... 2022-03-06 02:13:57 INFO: Run the R code ... 2022-03-06 02:13:59 INFO: [1] "Plotting the figure ..." [1] "Done" 2022-03-06 02:13:59 INFO: Plot generation done. Total running time: 1.967320442199707 seconds 2022-03-06 02:13:59 INFO: Results written in /mnt/test.out/
cd ~/work/busco/vol/test.out open .
busco_figure.R
と、busco_figure.png
が追加されています。
busoco_figure.png
を開いてみた結果。
以上、ユーザーガイドに沿って実行まで試してみたでした。
おわりに
「FASTAファイルのテストデータをどう入手したらいいんだ...」とユーザーガイドを読んで早々に行き詰まりました。お仕事でお付き合いのある某研究所の先生に相談させていただき解決しました。 というわけで、プロフェッショナルの方のアドバイスありきで BUSCO 実行までなんとかたどり着けました。ローカルPCでの実行でしたので解析に時間がかかりました。次回は解析時間短縮を狙って AWS を利用してクラウドのコンピュートリソースで実行したいと思います。
本屋さんで以下の書籍が医学書のコーナーにあって手にとってみたら AWS が取り上げられていて IT本コーナー以外でも AWS を見かける時代なんだ!とおもしろい発見がありました。 2021年12月発売の書籍でしてゲノム解析の実行環境として EC2インスタンスを利用する方法を紹介されていました。とくに AWS 初学者の方には EC2 の作成方法がカラー印刷のキャプチャで見やすかったのでよいかなと。
メタゲノムデータ解析 16Sも! ショットガンも! ロングリードも! 菌叢解析が得意になる凄技レシピ (実験医学別冊) | 坊農 秀雅 |本 | 通販 | Amazon